iT邦幫忙

2024 iThome 鐵人賽

DAY 14
1
Python

Python入門基礎語法與應用系列 第 14

Day 14 Python入門基礎語法與應用-集合&字典應用

  • 分享至 

  • xImage
  •  

今天的題目有用到集合也有用到字典
在國高中的數學作業中一定都遇過!

先給大家看程式碼~
https://ithelp.ithome.com.tw/upload/images/20240814/20168211FgBjOEo6I4.png
看到下面應該就覺得是個很熟悉的題目!><

第一行是一個叫做student的字典
裡面存放的key是人名,value是學生的座號
再把student輸出出來
也就會顯示學生的名字和對應的座號

第二段是在存放數學及格和英文及格的人
math_pass是數學及格的學生名字集合
eng_pass是英文及格的學生名字集合

第三段是輸出數學及格和英文及格分別有幾個人
%d等於len(math_pass)、len(eng_pass)
也就是在math_pass還有eng_pass裡面有幾個資料就輸出多少!
再來要輸出誰及格~
我用for迴圈去一個一個跑數學及格和英文及格的Set裡面的資料並輸出,以空格結尾,不空行

最後面就是集合運算了!
大概提一下~
"-"是差集
"&"是交集
"|"是聯集
再來一行一行解釋!

  1. math_pass - eng_pass : 計算數學及格但英文不及格的學生。這是集合的"差集"操作,可以得到在 math_pass 中但不在 eng_pass 中的學生

  2. eng_pass - math_pass : 計算數學不及格但英文及格的學生。這個也是集合的"差集"操作,可以得到在 eng_pass 中但不在 math_pass 中的學生

  3. eng_pass & math_pass : 計算兩科都及格的學生。這是集合的"交集"操作,可以得到在 eng_pass 和 math_pass 中"都存在"的學生。

  4. math_pass | eng_pass : 計算數學或英文至少有一科及格的學生。這是集合的"聯集"操作,可以得到在 math_pass 或 eng_pass 中的"所有"學生。

大概就是這樣!
給大家看看輸出結果~
https://ithelp.ithome.com.tw/upload/images/20240814/20168211BS2BLWKMtI.png
先輸出了姓名和座號
再來就是數學英文個別及格的人數和名字
還有這邊看的出來一個輸出的小差異!
直接print集合或字典的話都會有{}和''
如果用for迴圈去讀取輸出就不會有!
最後是集合運算出來的結果~
集合運算的部分可以對照上面的math_pass和eng_pass自己去算看看再比對結果!

這題可以用在處理和分析學生在科目中的及格情況!
利用字典來儲存學生的資料,用集合來表示及格的學生,並用集合運算來計算不同的情況~


上一篇
Day 13 Python入門基礎語法與應用-字典Dictionary
下一篇
Day 15 Python入門基礎語法與應用-字串String(1)
系列文
Python入門基礎語法與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言